﻿/************************************************************************
** 文  件：
**	OcrItem.h
** 功  能：
**	图片识别项信息封装
** 作  者：
**	email:lixx2048@163.com
**  wechat:lixiang6153
**  QQ:941415509
** 日  期：
**	2024/03/15	14:00:00
** 说  明：
**	无
** 版  本：
**	2024/03/15	14:00:00		1.0		lixx2048@163.com
/************************************************************************/
#pragma once
#include <string>
#include <vector>
#include <functional>
#include "opencv2/opencv.hpp"

// 识别结果
typedef struct
{
	// 识别设备
	std::string device;
	// 报警类型
	std::string alarmType;
	// 报警描述
	std::string alarmInfo;
	// 最大精度
	int confidence;
	// 识别数量
	int count;
} OCR_RESULT;

// 识别回调: 设备编码 识别结果 识别图片 原始图片 上下文
typedef std::function<int(std::string, std::vector<OCR_RESULT>&, cv::Mat&, void*)> OCR_CALL;

// 识别项目
class OcrItem
{
public:
	OcrItem();
	virtual ~OcrItem();

public:
	std::string GetDevice();
	void SetDevice(std::string);

	cv::Mat& GetImage();
	void SetImage(cv::Mat&);

	OCR_CALL GetCallback();
	void SetCallback(OCR_CALL);

	void* GetContext();
	void SetContext(void*);

protected:
	// 识别的设备
	std::string m_device;
	// 识别的图片
	cv::Mat		m_image;
	// 识别后回调
	OCR_CALL	m_call;
	// 识别上下文
	void* m_contex;
};

typedef std::shared_ptr<OcrItem> OcrItemPtr;